home *** CD-ROM | disk | FTP | other *** search
/ Aminet 6 / Aminet 6 - June 1995.iso / Aminet / text / hyper / ADtoHT2_0.lha / MyLib.lha / Makefile < prev   
Encoding:
Makefile  |  1995-03-21  |  5.3 KB  |  200 lines

  1. # Makefile for GNU make
  2.  
  3. COMPILER = GNUC
  4.  
  5. # Set the variable COMPILER to whatever compiler you are using.
  6. # Currently supported compilers are:
  7. #   GNUC -> GNU C
  8. #   SAS5 -> SAS/C V5.10b
  9. # Available compilers are listed in COMPILERS
  10.  
  11. COMPILERS = GNUC SAS5
  12.  
  13. # The variable EDIT_BACKUP specifies the name of backup files
  14. # from the editor. Use '%' for the filename.
  15. # Example: %.bak
  16.  
  17. EDIT_BACKUP = %!
  18.  
  19. # Targets:
  20. #   all       -> as usual
  21. #   clean     -> delete objects (#?.o) and editor backups
  22. #   veryclean -> delete everything that can me remade
  23. #   install   -> install the stuff (standard setup assumed)
  24. #   depend    -> remake dependency files only
  25. #   dist      -> make distribution package
  26.  
  27. # Note: Currently GNU C and 'sed' are required to remake dependencies.
  28.  
  29. DISTFILE = MyLib1_0.lha
  30.  
  31. ##############################################################################
  32.  
  33. LIBFILE_GNUC   = libMyLib.a
  34. STARTFILE_GNUC = MyStartup.o
  35. CPPFLAGS_GNUC  = -nostdinc -I. -I- -Iinclude -I/gnu/os-include -I/gnu/include
  36. CC_GNUC        = gcc
  37.  
  38. ifeq ($(COMPILER),GNUC)
  39.  
  40. CC             = $(CC_GNUC)
  41. CWARN          = -Wall -Wshadow -Wpointer-arith -Wbad-function-cast -Wcast-align -Werror
  42. CFLAGS         = $(CWARN_GNUC) -O2 -fomit-frame-pointer
  43. CPPFLAGS       = $(CPPFLAGS_GNUC)
  44.  
  45. COMPILE_C      = $(CC) $(CPPFLAGS) $(CFLAGS) -o $@ -c $<
  46. COMPILE_Cb     = $(CC) -fbaserel -DSMALL_DATA $(CPPFLAGS) $(CFLAGS) -o $@ -c $<
  47. COMPILE_Cs     = $(CC) -msmall-code -DSMALL_CODE $(CPPFLAGS) $(CFLAGS) -o $@ -c $<
  48. COMPILE_Cbs    = $(CC) -fbaserel -DSMALL_DATA -msmall-code -DSMALL_CODE $(CPPFLAGS) $(CFLAGS) -o $@ -c $<
  49.  
  50. %.a:
  51.     ar rv $@ $?
  52.  
  53. endif
  54.  
  55. ##############################################################################
  56.  
  57. LIBFILE_SAS5   = MyLib.lib
  58. STARTFILE_SAS5 = MyStartup.o
  59.  
  60. ifeq ($(COMPILER),SAS5)
  61.  
  62. CFLAGS         = -v -ms -cfst -j104i -j85i -j\*e
  63. CPPFLAGS       = -iinclude -ilc:/include
  64.  
  65. COMPILE_C      = lc -b0 -r0 $(CPPFLAGS) $(CFLAGS) -o$@ $<
  66. COMPILE_Cb     = lc -b1 -dSMALL_DATA $(CPPFLAGS) $(CFLAGS) -o$@ $<
  67. COMPILE_Cs     = lc -b0 -r1 -dSMALL_CODE $(CPPFLAGS) $(CFLAGS) -o$@ $<
  68. COMPILE_Cbs    = lc -b1 -dSMALL_DATA -r1 -dSMALL_CODE $(CPPFLAGS) $(CFLAGS) -o$@ $<
  69.  
  70. AS             = asm
  71. ASFLAGS        = -iINCLUDE:
  72. ASTEMP         = t:__Config__.a
  73.  
  74. define COMPILE_ASS
  75.     echo >$(ASTEMP)
  76.     $(AS) $(ASFLAGS) -o$@ $<
  77.     $(RM) $(ASTEMP)
  78. endef
  79.  
  80. define COMPILE_ASSb
  81.     echo >$(ASTEMP) "SMALL_DATA EQU 1"
  82.     $(AS) $(ASFLAGS) -o$@ $<
  83.     $(RM) $(ASTEMP)
  84. endef
  85.  
  86. define COMPILE_ASSs
  87.     echo >$(ASTEMP) "SMALL_CODE EQU 1"
  88.     $(AS) $(ASFLAGS) -o$@ $<
  89.     $(RM) $(ASTEMP)
  90. endef
  91.  
  92. define COMPILE_ASSbs
  93.     echo >$(ASTEMP)  "SMALL_DATA EQU 1"
  94.     echo >>$(ASTEMP) "SMALL_CODE EQU 1"
  95.     $(AS) $(ASFLAGS) -o$@ $<
  96.     $(RM) $(ASTEMP)
  97. endef
  98.  
  99. %.lib:
  100.     oml $@ r $?
  101.  
  102. endif
  103.  
  104. ##############################################################################
  105.  
  106. RM             = Delete
  107. MKDIR          = MakeDir
  108.  
  109. HEADERS        = Amiga.h ctype.h errno.h stdarg.h stddef.h stdio.h stdlib.h string.h
  110.  
  111. SRC_DIRS       = string ctype stdio stdlib MUI startup math
  112.  
  113. ARCFILE        = MyLib.lha
  114.  
  115. ##############################################################################
  116.  
  117. %.d: %.c
  118.     $(CC_GNUC) $(CPPFLAGS_GNUC) -M $< | sed -e 's!$(*F).o!$$(COMPILER)/$(*F).o $$(COMPILER)b/$(*F).o $$(COMPILER)s/$(*F).o $$(COMPILER)bs/$(*F).o $@!g'   -e 's!/gnu/[^ ]*\.h!!g' >$@
  119.  
  120. %.lha:
  121.     lha -Aarz u $@ $?
  122.  
  123. ##############################################################################
  124.  
  125. LIBFILE   = $(LIBFILE_$(COMPILER))
  126. STARTFILE = $(STARTFILE_$(COMPILER))
  127. OBJDIRS   = $(COMPILER) $(patsubst %,$(COMPILER)%,b s bs)
  128.  
  129. ##############################################################################
  130.  
  131. .PHONY: all
  132.  
  133. all: $(OBJDIRS) $(patsubst %,%/$(LIBFILE),$(OBJDIRS)) $(patsubst %,%/$(STARTFILE),$(OBJDIRS))
  134.  
  135. ##############################################################################
  136.  
  137. include $(addsuffix /Makefile.sub,$(SRC_DIRS))
  138.  
  139. ##############################################################################
  140.  
  141. $(COMPILER):
  142.     $(MKDIR) $@
  143.  
  144. $(COMPILER)b:
  145.     $(MKDIR) $@
  146.  
  147. $(COMPILER)s:
  148.     $(MKDIR) $@
  149.  
  150. $(COMPILER)bs:
  151.     $(MKDIR) $@
  152.  
  153. ##############################################################################
  154.  
  155. .PHONY: depend
  156.  
  157. depend:
  158.  
  159. ##############################################################################
  160.  
  161. .PHONY: clean veryclean
  162.  
  163. clean: $(addsuffix /clean,$(SRC_DIRS))
  164.     -$(RM) $(patsubst %,$(EDIT_BACKUP),Makefile) $(patsubst %,include/$(EDIT_BACKUP),$(HEADERS))
  165.  
  166. veryclean: clean $(addsuffix /veryclean,$(SRC_DIRS))
  167.  
  168. ##############################################################################
  169.  
  170. .PHONY: dist
  171.  
  172. dist: $(DISTFILE)
  173.  
  174. $(DISTFILE): $(ARCFILE)
  175.     lha -AZar u $@ $<
  176.  
  177. $(ARCFILE):: Makefile Internal.h
  178. $(ARCFILE):: $(addprefix include/,$(HEADERS))
  179. $(ARCFILE):: $(addsuffix /Makefile.sub,$(SRC_DIRS))
  180. $(ARCFILE):: $(foreach I,$(COMPILERS),$(I)/$(LIBFILE_$(I)) $(I)/$(STARTFILE_$(I)))
  181. $(ARCFILE):: $(foreach I,$(COMPILERS),$(I)b/$(LIBFILE_$(I)) $(I)b/$(STARTFILE_$(I)))
  182. $(ARCFILE):: $(foreach I,$(COMPILERS),$(I)s/$(LIBFILE_$(I)) $(I)s/$(STARTFILE_$(I)))
  183. $(ARCFILE):: $(foreach I,$(COMPILERS),$(I)bs/$(LIBFILE_$(I)) $(I)bs/$(STARTFILE_$(I)))
  184.  
  185. ##############################################################################
  186.  
  187. .PHONY: install
  188.  
  189. install: all
  190. ifeq ($(COMPILER),SAS5)
  191.     Copy $(LIBFILE) $(STARTFILE) LIB:
  192.     -MakeDir INCLUDE:MyLib
  193.     Copy $(addprefix include/,$(HEADERS)) INCLUDE:MyLib
  194. endif
  195. ifeq ($(COMPILER),GNUC)
  196.     -mkdir /GNU/lib/MyLib/libb /GNU/MyLib
  197.     cp $(LIBFILE) $(STARTFILE) /GNU/lib/MyLib/libb/
  198.     cp $(addprefix include/,$(HEADERS)) /GNU/MyLib
  199. endif
  200.